package me.sealer.ssm.service;

import me.sealer.ssm.model.User;
import me.sealer.ssm.page.PageResult;

/**
 * @author sealer
 * @date 2016/09/27
 */
public interface UserService {
    /**
     * 满足条件的用户列表
     *
     * @param usernameLike 用户名
     * @param pageNo       第几页
     * @param pageSize     每页几条数据
     * @return 分页返回满足条件的用户列表
     */
    PageResult<User> queryUsersPage(String usernameLike, int pageNo, int pageSize);

    /**
     * 根据用户名查找密码 精确查找
     *
     * @param username 用户名
     * @return 用户
     */
    User queryUserByUsername(String username);

    /**
     * 根据手机号获取用户
     *
     * @param phoneNumber 手机号
     * @return 用户
     */
    User queryUserByPhoneNumber(String phoneNumber);

    /**
     * 新增用户
     *
     * @param user 用户新增参数
     */
    void createUser(User user);

    /**
     * 根据email查询用户
     *
     * @param email email
     * @return 用户
     */
    User queryUserByEmail(String email);

    /**
     * 修改用户密码
     *
     * @param oldPassword     旧密码（明文）
     * @param password        新密码（明文）
     * @param confirmPassword 新确认密码（明文）
     * @param username        用户名
     */
    void modifyUserPassword(String oldPassword, String password, String confirmPassword, String username);

    /**
     * 手机号快捷登录
     *
     * @param phoneNumber 手机号
     */
    void quickLogin(String phoneNumber);

    /**
     * 用户正常用户名登录
     *
     * @param username   用户名
     * @param password   密码
     * @param rememberMe 是否脊柱密码
     */
    void login(String username, String password, Boolean rememberMe);

    /**
     * oauth2 login 参数待完善 TODO lsl
     *
     * @param username      用户名
     * @param origin        用户来源
     * @param userAvatarUrl 头像地址
     */
    void oauth2Login(String username, String origin, String userAvatarUrl);
}

